Modifying speed of an autonomous vehicle based on traffic conditions

ABSTRACT

Aspects of the disclosure relate generally to speed control in an autonomous vehicle. For example, an autonomous vehicle may include a user interface which allows the driver to input speed preferences. These preferences may include the maximum speed above the speed limit the user would like the autonomous vehicle to drive when other vehicles are present and driving above or below certain speeds. The other vehicles may be in adjacent or the same lane the vehicle, and need not be in front of the vehicle.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of U.S. patent applicationSer. No. 13/625,238, filed on Sep. 24, 2012, now U.S. Pat. No.8,831,813, issued Sep. 9, 2014, the disclosure of which is incorporatedherein by reference.

BACKGROUND

Autonomous vehicles use various computing systems to aid in thetransport of passengers from one location to another. Some autonomousvehicles may require an initial input or continuous input from anoperator, such as a pilot, driver, or passenger. Other autonomoussystems, for example autopilot systems, may be used only when the systemhas been engaged, which permits the operator to switch from a manualmode (where the operator exercises a high degree of control over themovement of the vehicle) to an autonomous mode (where the vehicleessentially drives itself) to modes that lie somewhere in between.

Such vehicles are typically equipped with various types of sensors inorder to detect objects in the surroundings. For example, autonomousvehicles may include lasers, sonar, radar, cameras, and other deviceswhich scan and record data from the vehicle's surroundings. Sensor datafrom one or more of these devices may be used to detect objects andtheir respective characteristics (position, shape, heading, speed,etc.). This detection and identification is a critical function for thesafe operation of autonomous vehicle.

For example, some autonomous vehicles may use sensors to detect objectsand adjust speed accordingly. For example, an autonomous vehicle mayautomatically (in other words, without input from a driver) slow itsspeed down if vehicles traveling in an adjacent lane are travelingslowly. This may mimic the behavior of a typical driver in ahigh-occupancy vehicle (“HOV”) lane on a highway who slows his or hervehicle down when traffic in the adjacent lane is moving much slower.For example, this type of maneuver may prevent accidents when a slowmoving vehicle moves into the HOV lane.

Other semi-autonomous systems using similar speed control to preventaccidents. For example, adaptive cruise control systems in a typicalvehicle may allow a driver to input a maximum speed of the vehicle. Ifthe adaptive cruise control system detects an object in the lanedirectly in front of the vehicle, the adaptive cruise control may slowthe vehicle down to maintain a specified distance from the object. Ifthe object speeds up or is no longer directly in front of the vehicle,the adaptive cruise control system may increase the speed of the vehicleback to the speed input by the driver.

BRIEF SUMMARY

One aspect of the disclosure provides a method. The method includesreceiving, from a driver of an autonomous vehicle, input indicating aset of two or more speed preferences, where each speed preference of theset of two or more speed preferences corresponds to a differenttriggering situation; receiving sensor data collected as the autonomousvehicle is maneuvered along a roadway; identifying one or more objectsin the autonomous vehicle's environment based on the sensor data;determining a set of objects likely to be vehicles traveling in the samegeneral direction as the autonomous vehicle from the identified one ormore objects; identifying a triggering situation based on the set ofobjects; identifying, by a processor, a speed preference of the set oftwo or more speed preferences based on the identified triggeringsituation; calculating, by the processor, a preferred speed based on theidentified speed preference; and adjusting, by the processor, a speed ofthe autonomous vehicle to the preferred speed.

In one example, the set of two or more speed preferences includes afirst speed preference having a maximum speed value above a speed limitfor the roadway that the driver would like the autonomous vehicle todrive when other vehicles are driving at least that maximum speed value,and wherein the triggering situation is an object driving at least thatmaximum speed value. In another example, the set of two or more speedpreferences includes a first speed preference having a first maximumspeed value above a speed limit for the roadway that the driver wouldlike the autonomous vehicle to drive when the speeds of the set ofobjects are less than a second maximum speed value, and the two or morespeed preferences also includes a second speed preference having thesecond maximum speed value above the speed limit for the roadway thatthe driver would like the autonomous vehicle to drive when objects ofthe set are driving at least the second maximum speed value. In anotherexample, identifying the triggering situation is based on a fastestspeed of an object of the set of objects. In another example,identifying the triggering situation is based on an average speed of theset of objects. In another example, the set of two or more speedpreferences includes a speed preference of a fixed value of speed belowa speed limit for the roadway, and wherein the triggering situation forthat speed preference is an object of the set of objects is traveling atleast some minimum speed. In another example, at least one object of theset of objects is located behind the vehicle. In another example,calculating the preferred speed is further based on a speed limit forthe roadway. In another example, the method also includes determining anestimated speed for each object of the set of objects, and identifyingthe speed preference is further based on the speed estimation for eachobject of the set of objects.

Another aspect of the disclosure provides a system. The system includesmemory and a processor. The processor is configured to receive, from adriver of an autonomous vehicle, input indicating a set of two or morespeed preferences, where each speed preference corresponds to adifferent triggering situation; store the set of two or more speedpreferences in the memory; receive sensor data collected as theautonomous vehicle is maneuvered along a roadway; identify one or moreobjects in the autonomous vehicle's environment based on the sensordata; determine a set of objects likely to be vehicles traveling in thesame general direction as the autonomous vehicle from the identified oneor more objects; identify a triggering situation based on the set ofobjects; identify a speed preference of the set of two or more speedpreferences based on the identified triggering situation; calculate apreferred speed based on the identified speed preference; and adjust aspeed of the autonomous vehicle to the preferred speed.

In one example, the set of two or more speed preferences includes afirst speed preference having a maximum speed value above a speed limitfor the roadway that the driver would like the autonomous vehicle todrive when other vehicles are driving at least that maximum speed value,and wherein the triggering situation is an object driving at least thatmaximum speed value. In another example, the set of two or more speedpreferences includes a first speed preference having a first maximumspeed value above a speed limit for the roadway that the driver wouldlike the autonomous vehicle to drive irrespective of the speeds ofobjects of the set of objects, and the two or more speed preferencesalso includes a second speed preference having a second maximum speedvalue above the speed limit for the roadway that the driver would likethe autonomous vehicle to drive when objects of the set are driving atleast the second maximum speed value. In another example, the processoris configured to identify the triggering situation based on a fastestspeed of an object of the set of objects. In another example, theprocessor is configured to identify the triggering situation based on anaverage speed of the set of objects. In another example, the set of twoor more speed preferences includes a speed preference of a fixed valueof speed below a speed limit for the roadway, and wherein the triggeringsituation for that speed preference is that an object of the set ofobjects is traveling at least some minimum speed. In another example, atleast one object of the set of objects is located behind the vehicle. Inanother example, the processor is further configured to calculate thepreferred speed further based on a speed limit for the roadway. Inanother example, the processor is further configured to determine anestimated speed for each object of the set of objects, and the processoridentifies the speed preference further based on the speed estimationfor each object of the set of objects.

A further aspect of the disclosure provides a tangible computer-readablestorage medium on which computer readable instructions of a program arestored. The instructions, when executed by a processor, cause theprocessor to perform a method. The method includes receiving, from adriver of an autonomous vehicle, input indicating a set of two or morespeed preferences, where each speed preference of the set of two or morespeed preferences corresponds to a different triggering situation;receiving sensor data collected as the autonomous vehicle is maneuveredalong a roadway; identifying one or more objects in the autonomousvehicle's environment based on the sensor data; determining a set ofobjects likely to be vehicles traveling in the same general direction asthe autonomous vehicle from the identified one or more objects;identifying a triggering situation based on the set of objects;identifying, by a processor, a speed preference of the set of two ormore speed preferences based on the identified triggering situation;calculating, by the processor, a preferred speed based on the identifiedspeed preference; and adjusting, by the processor, a speed of theautonomous vehicle to the preferred speed.

In one example, the set of two or more speed preferences includes afirst speed preference having a maximum speed value above a speed limitfor the roadway that the driver would like the autonomous vehicle todrive when other vehicles are driving at least that maximum speed value,and wherein the triggering situation is an object driving at least thatmaximum speed value. In another example, the set of two or more speedpreferences includes a first speed preference having a first maximumspeed value above a speed limit for the roadway that the driver wouldlike the autonomous vehicle to drive when the speeds of the set ofobjects are less than a second maximum speed value, and the two or morespeed preferences also includes a second speed preference having thesecond maximum speed value above the speed limit for the roadway thatthe driver would like the autonomous vehicle to drive when objects ofthe set are driving at least the second maximum speed value.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a functional diagram of a system in accordance with aspects ofthe disclosure.

FIG. 2 is an interior of an autonomous vehicle in accordance withaspects of the disclosure.

FIG. 3A is an exterior of an autonomous vehicle in accordance withaspects of the disclosure.

FIG. 3B is a pictorial diagram of a system in accordance with aspects ofthe disclosure.

FIG. 3C is a functional diagram of a system in accordance with aspectsof the disclosure.

FIG. 4 is a diagram of map information in accordance with aspects of thedisclosure.

FIG. 5 is a diagram of a roadway in accordance with aspects of thedisclosure.

FIG. 6 is an example of laser scan data depicting a vehicle on a roadwayin accordance with aspects of the disclosure.

FIG. 7 is a diagram of laser scan data in accordance with aspects of thedisclosure.

FIG. 8 is another diagram of laser scan data and detailed mapinformation in accordance with aspects of the disclosure.

FIGS. 9A and 9B are tables of triggering situations and speedpreferences in accordance with aspects of the disclosure.

FIG. 10 is a flow diagram in accordance with aspects of the disclosure.

DETAILED DESCRIPTION

Aspects of the disclosure relate generally to controlling the speed ofan autonomous vehicle according to predefined preferences of a driver.For example, a computer associated with the autonomous vehicle mayreceive input from a driver indicating a set of speed preferences. Eachspeed preference corresponds to a different triggering situation. Thecomputer may then receive sensor data collected along a roadway. Thecomputer may use the sensor data to identify one or more objects theautonomous vehicle's environment. Using, for example, a detailed map ofthe roadway as well as estimations of the characteristics of the objectsfrom the sensor data, the computer may then determine a set of objectslikely to be vehicles traveling in the same general direction as theautonomous vehicle from the identified one or more objects. Thesevehicles need not be traveling directly in front of vehicle the vehicle.

The computer may then use the set of objects likely to be vehicles toidentify a triggering situation, for example, based on the speeds of thevehicles. The triggering situation may then be used to identify a speedpreference of the set of speed preferences. The computer may calculate apreferred speed using the set of speed preferences and adjusts the speedof the autonomous vehicle to the preferred speed.

As shown in FIG. 1, an autonomous driving system 100 in accordance withone aspect of the disclosure includes a vehicle 101 with variouscomponents. While certain aspects of the disclosure are particularlyuseful in connection with specific types of vehicles, the vehicle may beany type of vehicle including, but not limited to, cars, trucks,motorcycles, busses, boats, airplanes, helicopters, lawnmowers,recreational vehicles, amusement park vehicles, trams, golf carts,trains, and trolleys. The vehicle may have one or more computers, suchas computer 110 containing a processor 120, memory 130 and othercomponents typically present in general purpose computers.

The memory 130 stores information accessible by processor 120, includinginstructions 132 and data 134 that may be executed or otherwise used bythe processor 120. The memory 130 may be of any type capable of storinginformation accessible by the processor, including a computer-readablemedium, or other medium that stores data that may be read with the aidof an electronic device, such as a hard-drive, memory card, ROM, RAM,DVD or other optical disks, as well as other write-capable and read-onlymemories. Systems and methods may include different combinations of theforegoing, whereby different portions of the instructions and data arestored on different types of media.

The instructions 132 may be any set of instructions to be executeddirectly (such as machine code) or indirectly (such as scripts) by theprocessor. For example, the instructions may be stored as computer codeon the computer-readable medium. In that regard, the terms“instructions” and “programs” may be used interchangeably herein. Theinstructions may be stored in object code format for direct processingby the processor, or in any other computer language including scripts orcollections of independent source code modules that are interpreted ondemand or compiled in advance. Functions, methods and routines of theinstructions are explained in more detail below.

The data 134 may be retrieved, stored or modified by processor 120 inaccordance with the instructions 132. For instance, although the systemand method is not limited by any particular data structure, the data maybe stored in computer registers, in a relational database as a tablehaving a plurality of different fields and records, XML documents orflat files. The data may also be formatted in any computer-readableformat. By further way of example only, image data may be stored asbitmaps comprised of grids of pixels that are stored in accordance withformats that are compressed or uncompressed, lossless (e.g., BMP) orlossy (e.g., JPEG), and bitmap or vector-based (e.g., SVG), as well ascomputer instructions for drawing graphics. The data may comprise anyinformation sufficient to identify the relevant information, such asnumbers, descriptive text, proprietary codes, references to data storedin other areas of the same memory or different memories (including othernetwork locations) or information that is used by a function tocalculate the relevant data.

The processor 120 may be any conventional processor, such ascommercially available CPUs. Alternatively, the processor may be adedicated device such as an ASIC. Although FIG. 1 functionallyillustrates the processor, memory, and other elements of computer 110 asbeing within the same block, it will be understood that the processorand memory may actually comprise multiple processors and memories thatmay or may not be stored within the same physical housing. For example,memory may be a hard drive or other storage media located in a housingdifferent from that of computer 110. Accordingly, references to aprocessor or computer will be understood to include references to acollection of processors or computers or memories that may or may notoperate in parallel. Rather than using a single processor to perform thesteps described herein some of the components, such as steeringcomponents and deceleration components, may each have their ownprocessor that only performs calculations related to the component'sspecific function.

In various aspects described herein, the processor may be locatedremotely from the vehicle and communicate with the vehicle wirelessly.In other aspects, some of the processes described herein are executed ona processor disposed within the vehicle while others are executed by aremote processor, including taking the steps necessary to execute asingle maneuver.

Computer 110 may include all of the components normally used inconnection with a computer such as a central processing unit (CPU),memory (e.g., RAM and internal hard drives) storing data 134 andinstructions such as a web browser, an electronic display 142 (e.g., amonitor having a screen, a small LCD touch-screen or any otherelectrical device that is operable to display information), user input140 (e.g., a mouse, keyboard, touch screen and/or microphone), as wellas various sensors (e.g., a video camera) for gathering the explicit(e.g., a gesture) or implicit (e.g., “the person is asleep”) informationabout the states and desires of a person.

In one example, computer 110 may be an autonomous driving computingsystem incorporated into vehicle 101. FIG. 2 depicts an exemplary designof the interior of an autonomous vehicle. The autonomous vehicle mayinclude all of the features of a non-autonomous vehicle, for example: asteering apparatus, such as steering wheel 210; a navigation displayapparatus, such as navigation display 215; and a gear selectorapparatus, such as gear shifter 220. The vehicle may also have varioususer input devices, such as gear shifter 220, touch screen 217, orbutton inputs 219, for activating or deactivating one or more autonomousdriving modes and for enabling a driver or passenger 290 to provideinformation, such as a navigation destination, to the autonomous drivingcomputer 110.

Vehicle 101 may also include one or more additional displays. Forexample, the vehicle may include a display 225 for displayinginformation regarding the status of the autonomous vehicle or itscomputer. In another example, the vehicle may include a statusindicating apparatus, such as status bar 230, to indicate the currentstatus of vehicle 101. In the example of FIG. 2, status bar 230 displays“D” and “2 mph” indicating that the vehicle is presently in drive modeand is moving at 2 miles per hour. In that regard, the vehicle maydisplay text on an electronic display, illuminate portions of vehicle101, such as steering wheel 210, or provide various other types ofindications.

The autonomous driving computing system may capable of communicatingwith various components of the vehicle. For example, returning to FIG.1, computer 110 may be in communication with the vehicle's conventionalcentral processor 160 and may send and receive information from thevarious systems of vehicle 101, for example the braking 180,acceleration 182, signaling 184, and navigation 186 systems in order tocontrol the movement, speed, etc., of vehicle 101. In addition, whenengaged, computer 110 may control some or all of these functions ofvehicle 101 and thus be fully or merely partially autonomous. It will beunderstood that although various systems and computer 110 are shownwithin vehicle 101, these elements may be external to vehicle 101 orphysically separated by large distances.

The vehicle may also include a geographic position component 144 incommunication with computer 110 for determining the geographic locationof the device. For example, the position component may include a GPSreceiver to determine the device's latitude, longitude and/or altitudeposition. Other location systems such as laser-based localizationsystems, inertial-aided GPS, or camera-based localization may also beused to identify the location of the vehicle. The location of thevehicle may include an absolute geographical location, such as latitude,longitude, and altitude as well as relative location information, suchas location relative to other cars immediately around it which can oftenbe determined with less noise that absolute geographical location.

The vehicle may also include other features in communication withcomputer 110, such as an accelerometer, gyroscope or anotherdirection/speed detection device 146 to determine the direction andspeed of the vehicle or changes thereto. By way of example only, device146 may determine its pitch, yaw or roll (or changes thereto) relativeto the direction of gravity or a plane perpendicular thereto. The devicemay also track increases or decreases in speed and the direction of suchchanges. The device's provision of location and orientation data as setforth herein may be provided automatically to the user, computer 110,other computers and combinations of the foregoing.

The computer may control the direction and speed of the vehicle bycontrolling various components. By way of example, if the vehicle isoperating in a completely autonomous mode, computer 110 may cause thevehicle to accelerate (e.g., by increasing fuel or other energy providedto the engine), decelerate (e.g., by decreasing the fuel supplied to theengine or by applying brakes) and change direction (e.g., by turning thefront two wheels).

The vehicle may also include components 148 for detecting objects andconditions external to the vehicle such as other vehicles, obstacles inthe roadway, traffic signals, signs, trees, etc. The detection systemmay include lasers, sonar, radar detection units (such as those used foradaptive cruise control), cameras, or any other detection devices whichrecord data which may be processed by computer 110.

For example, if the vehicle is a small passenger vehicle, the car mayinclude a laser mounted on the roof or other convenient location. In oneexample, shown in FIG. 3A, vehicle 101 may comprise a small passengervehicle. In this example, vehicle 101 sensors may include lasers 310 and311, mounted on the front and top of the vehicle, respectively. Thelasers may include commercially available lasers such as the VelodyneHDL-64 or other models. The lasers may include more than one laser beam;for example, a Velodyne HDL-64 laser may include 64 beams. In oneexample, the beams of laser 310 may have a range of 150 meters, a thirtydegree vertical field of view, and a thirty degree horizontal field ofview. The beams of laser 311 may have a range of 50-80 meters, a thirtydegree vertical field of view, and a 360 degree horizontal field ofview. It will be understood that other lasers having different rangesand configurations may also be used. The lasers may provide the vehiclewith range and intensity information which the computer may use toidentify the location and distance of various objects in the vehiclessurroundings. In one aspect, the laser may measure the distance betweenthe vehicle and the object surfaces facing the vehicle by spinning onits axis and changing its pitch.

The aforementioned sensors may allow the vehicle to understand andpotentially respond to its environment in order to maximize safety forpassengers as well as objects or people in the environment. It will beunderstood that the vehicle types, number and type of sensors, thesensor locations, the sensor fields of view, and the sensors' sensorfields are merely exemplary. Various other configurations may also beutilized.

In addition to the sensors described above, the computer may also useinput from sensors typical non-autonomous vehicles. For example, thesesensors may include tire pressure sensors, engine temperature sensors,brake heat sensors, brake pad status sensors, tire tread sensors, fuelsensors, oil level and quality sensors, air quality sensors (fordetecting temperature, humidity, or particulates in the air), etc.

Many of these sensors provide data that is processed by the computer inreal-time, that is, the sensors may continuously update their output toreflect the environment being sensed at or over a range of time, andcontinuously or as-demanded provide that updated output to the computerso that the computer can determine whether the vehicle's then-currentdirection or speed should be modified in response to the sensedenvironment.

In addition to processing data provided by the various sensors, thecomputer may rely on environmental data that was obtained at a previouspoint in time and is expected to persist regardless of the vehicle'spresence in the environment. For example, returning to FIG. 1, data 134may include detailed map information 136, e.g., highly detailed mapsidentifying various roadway features such as the shape and elevation ofroadways, intersections, crosswalks, speed limits, traffic signals,buildings, signs, real time traffic information, or other such objectsand information.

The detailed map information 136 may also include lane markerinformation identifying the location, elevation, and shape of lanemarkers. The lane markers may include features such as solid or brokendouble or single lane lines, solid or broken lane lines, reflectors,etc. A given lane may be associated with left and right lane lines orother lane markers that define the boundary of the lane.

In some examples, the detailed map information may include predetermined“rails” along which computer 110 may maneuver vehicle 101. These railsmay therefore be associated with direction information indicative of thedirection of a lane (or direction traffic should move in that lane) inwhich the rail appears.

FIG. 4 depicts a detailed map 400 including an example section ofroadway. The detailed map of the section of roadway includes informationsuch as solid lane line 410, broken lane lines 420, 440, and doublesolid lane lines 430. These lane lines define lanes 450, 460 and 470.Each lane is associated with a rail 480-82, which indicates thedirection (see arrows 490-92) in which a vehicle should generally travelin the respective lane. Here, traffic in both lanes 450 and 460 flowsthe in the same general direction while traffic in lane 470 flows in adifferent general direction from lanes 450 and 460. For example, a firstvehicle may follow rail 480 in the direction of arrow 490 when drivingalong lane 450. Similarly, a second vehicle in lane 470 would befollowing the direction of arrow 492 of rails 480. In this regard, thesecond vehicle traveling in lane 470 would be considered “opposing”traffic to the first vehicle traveling in lane 450 (and vice versa).

Again, although the detailed map information is depicted herein as animage-based map, the map information need not be entirely image based(for example, raster). For example, the detailed map information mayinclude one or more roadgraphs or graph networks of information such asroads, lanes, intersections, and the connections between these features.Each feature may be stored as graph data and may be associated withinformation such as a geographic location and whether or not it islinked to other related features, for example, a stop sign may be linkedto a road and an intersection, etc. In some examples, the associateddata may include grid-based indices of a roadgraph to allow forefficient lookup of certain roadgraph features.

Computer 110 may also receive or transfer information to and from othercomputers. For example, the map information stored by computer 110 maybe received or transferred from other computers and/or the sensor datacollected from the sensors of vehicle 101 may be transferred to anothercomputer for processing as described herein. As shown in FIGS. 3B and3C, data from computer 110 may be transmitted via a network to computer320 for further processing. The network, and intervening nodes, maycomprise various configurations and protocols including cellularnetworks, the Internet, World Wide Web, intranets, virtual privatenetworks, wide area networks, local networks, private networks usingcommunication protocols proprietary to one or more companies, Ethernet,WiFi and HTTP, and various combinations of the foregoing. Suchcommunication may be facilitated by any device capable of transmittingdata to and from other computers, such as modems and wirelessinterfaces. In another example, data may be transferred by storing it onmemory which may be accessed by or connected to computers 110 and 320.

In one example, computer 320 may comprise a server having a plurality ofcomputers, e.g., a load balanced server farm, that exchange informationwith different nodes of a network for the purpose of receiving,processing and transmitting the data from computer 110. The server maybe configured similarly to the computer 110, with a processor 330,memory 350, instructions 360, and data 370.

Returning to FIG. 1, data 134 may also include one or more speedpreferences 138. As described in more detail below, a driver maydesignate a set of speed preferences for speed control of the vehicle.These preferences may be defined in terms of an absolute value, such asmiles per hour, or as a percentage of the speed limit (stored, as notedabove, as part of the detailed map 136). For example, a speed preferencemay specify the desired speed above/below the speed limit via a fixedamount (e.g., at most 5 mph above the speed limit) or via a percentage(e.g., at most 10% above the speed limit).

These preferences may also be associated with triggering situations. Forexample, a triggering situation may be the presence or absence of othervehicles and/or estimated speeds of other vehicles. In this regard, thepreferences may also include a default value such as the actual speedlimit, when no triggering situation is detected.

In addition to the operations described above and illustrated in thefigures, various operations will now be described. It should beunderstood that the following operations do not have to be performed inthe precise order described below. Rather, various steps can be handledin a different order or simultaneously, and steps may also be added oromitted.

As noted above, vehicle 101 may include a plurality of user inputdevices. The driver may input his or her own personal set of speedpreferences using the user input devices 140 and/or touch screen 217.The user may enter the input initially before the vehicle beginsdriving, or while the vehicle is in motion and encountering differenttraffic patterns.

As noted above, a driver may input a plurality of different speeds eachassociated with a different triggering situation. In one example, theset of speed preferences may include different speed values fordifferent triggering situations. For example a driver may input amaximum speed value above the speed limit the user would like theautonomous vehicle to drive in the absence of other vehicles. Forexample, a driver may specify that the vehicle may drive no more than 5mph above the speed limit if there are not other vehicles on theroadway.

In another example, a driver may input a maximum speed value above thespeed limit that the driver would like the autonomous vehicle to drivewhen other vehicles are driving at least that fast. For example, adriver may specify that the vehicle no more than drive 10 mph above thespeed limit, but only if other vehicles are consistently driving morethan 10 mph above the speed limit.

In addition, a driver may also input a maximum speed value above thespeed limit that the driver would like the autonomous vehicle to driveregardless of the speeds of the speeds of other vehicles as well as asecond maximum speed value above the speed limit that the driver wouldlike the autonomous vehicle to drive when other vehicles are driving atleast as fast as the second maximum speed value. For example, a drivermay specify that the vehicle may drive no more than 5 mph above limitregardless of the speed of other vehicles, but if other vehicles areconsistently driving 10 mph above the speed limit, the autonomousvehicle can increase this speed to 10 mph above the speed limit.

In yet another example, the driver may input a maximum speed value belowthe flow of traffic. For example, this maximum speed value may be usedto keep the vehicle moving slower than other vehicles on the roadway.For example, a driver may specify that the vehicle may drive no morethan 5 mph above limit if other vehicles are consistently driving morethan 10 mph above the speed limit. In this regard, the autonomousvehicle would be strictly slower than at least one other vehicle.

Computer 110 may control vehicle 101 in the autonomous mode. FIG. 5depicts vehicle 101 on a section of the roadway 500 corresponding to thedetailed map information of FIG. 4. The detailed map of the section ofroadway includes information such as solid lane line 510, broken lanelines 520, 540, and double solid lane lines 530. These lane lines definelanes 550, 560 and 570.

While the vehicle is moving along a roadway, the vehicle's sensors maycollect data about the vehicle's environment and send the sensor data tocomputer 110 for processing. For example, the sensors may include alaser such as laser 311 of FIG. 3. FIG. 6 depicts an exemplary image 600of vehicle 101 approaching an intersection. The image was generated fromlaser scan data collected by the vehicle's lasers for a single 360degree scan of the vehicle's environment. The white lines represent howthe laser “sees” its environment. When the data points of a plurality ofbeams are considered together, the data points may indicate the shapeand three-dimensional (3D) location (x,y,z) of other items in thevehicle's environment. For example, the laser scan data may indicate theoutline, shape and distance from vehicle 101 of various objects such aspedestrians 610, vehicles 620, and curb 630.

FIG. 7 depicts another example 700 of the laser scan data collected fora single scan. In this example, vehicle 101 is depicted driving along asection of roadway. Laser lines 730 indicate the area around the vehiclescanned by the laser. The laser lines may also indicate the shape andlocation other items in the vehicle's surroundings. For example,reference line 770 connects the distance and location readings 710 ofthe edge of the curb and is not part of the laser data. The laser datamay also include indications of the distance and location of lane lines.FIG. 7 also includes distance and location readings 730 representingsolid double lane lines as well as distance and location readings 720representing broken lane lines. In this example, the data collected bythe laser also includes three other vehicles that appear as disturbances750, 755, and 760 in the laser lines 740. Disturbances 750, 755, and 760may actually represent vehicles 580, 585, and 590 of FIG. 5.

The laser scan data may be processed to identify objects in thevehicle's surroundings. For example, FIG. 8 depicts an example of boththe detailed map information 400 as well as the laser scan data 700 forthe section of roadway. As can be seen, the laser scan data and thedetailed map correspond quite well. For example, location readings 730correspond to the location of the double yellow lines 430 and locationreadings 710 correspond to the location of the white lane line 410.

In one example, objects may be identified by identifying clusters ofdata points from the laser scan data indicative of the outline or edgesof objects. These clusters may be processed to estimate thecharacteristics of the particular object such as location (relative tovehicle 101, the detailed map 136, GPS latitude and longitudecoordinates, or another reference) and size. In this regard, a clusterof data points which is not associated with a road feature (lane line,curb, etc.) of the detailed map information and are at least somethreshold distance above the surface of the roadway may be identified asan object other than a road feature.

For example, referring to FIG. 8, vehicle 101 may identify disturbances750 and 760 as objects 850 and 860 in the roadway which are not alsoincluded in the detailed map information. In other words, some portionof the data points associated with objects 750, 755 and 760 are locatedat or above a threshold distance such as 15 cm above the surface of theroadway (as indicated from detailed map 400) and do not correspond to aroad feature of the detailed map information 136. In this regard, inaddition to detecting objects in front of vehicle 101, the sensors mayalso detect objects in adjacent lanes and also behind vehicle 101. Theseobjects may not be immediately identified as actual vehicles, but simplyas objects in the roadway.

As the laser data points are collected over some period of time whilevehicle 101 moves along the roadway, computer 110 may also determinewhether and how the object is moving. For example, if an object wasmoving, the cluster of data points associated with the object would alsoappear to move. In this regard, computer 110 may determine the speed andapproximate heading of an object. For example, computer 110 may estimatethat object 860 is traveling at 55 miles per hour in a southerlydirection; object 850 is traveling at 48 miles per hour in a southerlydirection; and object 855 is traveling at 52 miles per hour in anortherly direction.

The approximate location of the groups of data points indicating anobject in the roadway may also be used to determine a possible headingof the disturbance. For example, objects 850 and 860 are located in lane450/550 (see FIGS. 4 and 5). Thus, the computer may assume that theobjects are moving in the direction of the rail 490 of lane 450 (here,the same direction as vehicle 101). Similarly, as object 850 is locatedin lane 470/570 (see FIGS. 4 and 5), computer 110 may assume that theobjects are moving in the direction of the rail 492. This additionalheading information may be used to correct the heading determined fromthe laser data points and/or to predict a future location of theobjects.

Computer 110 may also identify a set of objects likely to be vehiclestraveling in the same general direction as vehicle 101. For example,computer 110 may identify objects that are both in the roadway and alsotraveling in a lane having the same heading as the lane in which vehicle101 is traveling. Thus, objects which may not be in the same lane mayalso be included in the set, and objects which are generally travelingin a different direction from vehicle 101 (such as opposing traffic) maybe excluded from the set. Returning to FIG. 8, both objects 850 and 860are traveling in a lane having the same heading as the lane in whichvehicle 101 is traveling. In this regard, the set of object may includeboth objects 850 and 860. Similarly, any objects, such as object 855,traveling in lane 470/570 (see FIGS. 4 and 5), or opposing traffic, maybe excluded from this set.

Computer 110 may identify objects likely to be vehicles in various ways.For example, an object may be classified as a vehicle based on itscharacteristics, image matching, estimations based on characteristicsdetermined from sensor readings, the location of the object, etc. Thismay include classifying objects based on an object type models ormachine learning classifiers that output a possible object type andcorresponding possibilities based on the determined characteristics forthat object. In an example model, an object's type may be identifiedbased on its location with respect to a roadway, its speed, its size,its comparison to sensor data collected by other pre-identified object(such as by image matching), etc. For example, given an object, such asobject 850, that is perceived to be about 69 inches wide, 59 incheshigh, and 177 includes long, an object type model may output informationindicating that the object is 0.5% likely to be a pedestrian, 2.5%likely to be a bicyclist and 97% likely to be a vehicle.

In one example, the set of objects likely to be vehicles traveling inthe same general direction as vehicle 101 may be empty if there are noother vehicles on the roadway (or if there are no other vehicles whichare not opposing traffic). Computer 110 may use this triggeringsituation to identify a speed preference of the set of speed preferencesfor the driver. For example, returning to FIG. 8, if objects 850 and 860were not present, computer 110 may determine that object 855 is notinclude in the set of objects likely to be vehicles traveling in thesame general direction as vehicle 101, and accordingly, that the set isempty. In this example, computer 110 may identify the correspondingspeed preference for the trigger situation where the set is empty.Tables 910 and 920 of FIG. 9A or 9B, are examples of sets of speedpreferences for different drivers. Using the triggering situation of anempty set, computer 110 may identify a maximum speed value above thespeed limit the user would like the autonomous vehicle to drive in theabsence of other vehicles of 2% above the speed limit. As noted above,this maximum speed value may be a percentage of the speed limit or afixed number of miles per hour.

Computer 110 may then use the identified speed preference to adjust orotherwise control the speed of vehicle 101. For example, using themaximum speed value above the speed limit the user would like theautonomous vehicle to drive in the absence of other vehicles (see tables910 or 920) as well as the speed limit data from the detailed mapinformation 136 for roadway 500, computer may calculate a preferredspeed. Computer 110 may then adjust the speed of the vehicle tocorrespond to the preferred speed. Assuming the driver has input amaximum speed value above the speed limit the user would like theautonomous vehicle to drive in the absence of other vehicles of 2% andcomputer 110 identifies that the speed limit of the roadway 500 is 50miles per hour, computer 110 may calculate a preferred speed of 51 milesper hour (50 miles per hour×1.02). Computer 110 may then automaticallyadjust the speed of vehicle 101 to 51 miles per hour.

Alternatively, if the set of objects likely to be vehicles traveling thesame general direction as vehicle 101 includes at least one object,computer 110 may use the estimated speed of the object or objects of theset to determine a triggering situation and also a speed preference ofthe set of speed preferences. For example, computer 110 may determinethe speeds of each vehicle of the set of objects and use the speed ofthe fastest moving object to determine a triggering situation and aspeed preference. Alternatively, computer 110 may compute an averagespeed of the objects the set or use some other statistical calculationto determine a combined speed value for all of the objects in the set.For example, computer 100 may compute the average speed of vehicles in alane, the average speed of vehicles in front of (down the road from) thevehicle 101 in a lane, the minimum speed (the slowest vehicle), themaximum speed (the fastest vehicle), a filtered average speed removingoutliers (extreme fast or slow vehicles relative to the average), etc.This combined speed value may then be used to determine a triggeringsituation and a speed preference.

Returning to the example of FIG. 8, the set of objects includes objects850 and 860. Computer 110 has determined that object 850 is traveling at55 miles per hour, object 860 is traveling at 48 miles per hour, and thespeed limit of roadway 500 is 50 miles per hour. If a triggeringsituation is that objects in the set are traveling at least 5 miles perhour above the speed limit or at least 55 miles per hour, because object850 is traveling at 55 miles per hour, computer 110 may use thisinformation to identify a speed preference for this particulartriggering situation. Referring to the example of FIG. 9A, computer mayidentify a maximum speed value of 3 miles per hour above the speed limitwhen other vehicles are driving at least 55 miles per hour (5 miles perhour above the speed limit). As noted above, this maximum speed valuemay be a percentage of the speed limit or a fixed number of miles perhour.

Again, computer 110 may then use the identified speed preference toadjust or otherwise control the speed of vehicle 101. For example,assuming the driver has input a maximum speed value above the speedlimit of 3 miles per hour when other vehicles are driving at least 5miles per hour over the speed limit, computer 110 may calculate apreferred speed of 53 miles per hour (50 miles per hour+3 miles perhour). Computer 110 may then automatically adjust the speed of vehicle101 to 53 miles per hour.

In another example of table 920 of FIG. 9B, because object 850 istraveling at 55 miles per hour, computer may use this information toidentify a speed preference for this particular triggering situation. Inthis example, computer 110 may use this to identify a maximum speedvalue of 6% below the speed of the vehicle traveling at least 55 milesper hour. Again, this maximum speed value may be a percentage of thespeed limit or a fixed number of miles per hour.

As noted above, computer 110 may then use the identified speedpreference to adjust or otherwise control the speed of vehicle 101. Forexample, assuming the driver has input a minimum speed deviation belowthe flow of traffic of 3 miles per hour when other vehicles are drivingat least 55 miles per hour, computer 110 may calculate a preferred speedof 52 miles per hour (55 miles per hour−3 miles per hour). Computer 110may then automatically adjust the speed of vehicle 101 to 52 miles perhour.

In yet another example, if no other triggering situations areidentified, computer 110 may refer to a default speed preference. Forexample, as shown in both tables 910 and 920, if no particulartriggering situations are identified, the default speed value is thespeed limit of the roadway. In this regarding, computer 110 may adjustthe speed of vehicle 101 to match the speed limit for roadway 500, here50 miles per hour.

Flow diagram 1000 of FIG. 10 is an example of some of the aspectsdescribed above as performed by computer 101. For example, at block1010, computer 110 receives input from a driver indicating a set ofspeed preferences, where each speed preference corresponds to adifferent triggering situation. The computer receives sensor datacollected as the autonomous vehicle is maneuvered by the computer alonga roadway at block 1020. The computer may use the sensor data toidentify one or more objects the vehicle's environment at block 1030.Using, for example, a detailed map of the roadway as well as estimationsof the characteristics of the objects from the sensor data, computer 110then determines a set of objects likely to be vehicles traveling in thesame general direction as the autonomous vehicle from the identified oneor more objects at block 1040. As noted above, these vehicles need notbe traveling directly in front of vehicle the vehicle.

Computer 110 uses the set of objects likely to be vehicles to identify atriggering situation, for example, based on the speeds of the vehiclesat block 1050. The identified triggering situation is used to identify aspeed preference of the set of speed preferences at block 1060. Thecomputer calculates a preferred speed using the identified speedpreference and adjusts the speed of the autonomous vehicle to thepreferred speed at blocks 1070 and 1080, respectively.

Different drivers may want the vehicles to drive at different speeds andthus, may input individualized speed preferences. For example, somepeople may only want to travel faster than the speed limit if there areother vehicles are doing this, and will want to stay below (or at mostat) the speed of other vehicles, to match the flow of traffic. Thisallows for more aggressive driving which is relatively conservative asto other vehicles. Allowing drivers to specify their preferences asdescribed herein is important to keeping them happy and relaxed. Forexample, some drivers may assume that they are safer if they keep upwith the speed of traffic and, if traveling above the speed limit, lesslikely to be pulled over when other vehicles are traveling at least asfast.

By using a set of speed preferences, computer 110 may provide a driverwith a more natural driving experience in the vehicle 101. For example,computer 110 may use the set of speed preferences to automatically adaptto the general flow of traffic in such a way that is both expected andpleasing to a particular driver. In addition, the driver does not needto constantly engage and disengage a cruise control or adjust the speedof the cruise control when driving. These functions may be performedautomatically by computer 110.

As these and other variations and combinations of the features discussedabove can be utilized without departing from the subject matter asdefined by the claims, the foregoing description of exemplaryimplementations should be taken by way of illustration rather than byway of limitation of the subject matter as defined by the claims. Itwill also be understood that the provision of the examples describedherein (as well as clauses phrased as “such as,” “e.g.”, “including” andthe like) should not be interpreted as limiting the claimed subjectmatter to the specific examples; rather, the examples are intended toillustrate only some of many possible aspects.

The invention claimed is:
 1. A method comprising: receiving, by one ormore computing devices, sensor data collected as a vehicle is maneuveredby the one or more computing devices along a roadway; determining, bythe one or more computing devices, a set of objects likely to bevehicles traveling in the same general direction as the autonomousvehicle from the sensor data; identifying, by the one or more computingdevices, a speed preference for the vehicle based on the set of objectsand data including a set of two or more speed scenarios for objectslikely to be vehicles traveling in the same general direction as theautonomous vehicle; calculating, by the one or more computing devices, apreferred speed based on the identified speed preference; and adjusting,by the one or more computing devices, a speed of the autonomous vehicleto the preferred speed.
 2. The method of claim 1, further comprising:identifying a driver of the vehicle; and wherein identifying the speedpreference includes selecting the speed preference from a plurality ofspeed preferences for different drivers based on the identified driver.3. The method of claim 1, wherein when the set of objects is empty, thespeed preference includes a maximum speed value above a speed limit forthe roadway.
 4. The method of claim 1, wherein when the set of objectsis empty, the speed preference includes a speed limit for the roadway.5. The method of claim 1, wherein identifying the speed preferencefurther includes identifying a scenario of the set of two or more speedscenarios based a speed of an object of the set of objects that isslower than a speed of any other object of the set of objects and thespeed preference is associated with the identified scenario.
 6. Themethod of claim 1, wherein identifying the speed preference furtherincludes identifying a scenario of the set of two or more speedscenarios based on an average speed of the objects of the set of objectsand the speed preference is associated with the identified scenario. 7.The method of claim 1, wherein identifying the speed preference furtherincludes identifying a scenario of the set of two or more speedscenarios based on an average speed of the objects of the set of objectsabove a speed limit of the roadway and the speed preference isassociated with the identified scenario.
 8. The method of claim 1,wherein identifying the speed preference further includes identifying ascenario of the set of two or more speed scenarios based on a speed ofan object of the set of objects that is faster than a speed of any otherobject of the set of objects and the speed preference is associated withthe identified scenario.
 9. The method of claim 1, wherein the speedpreference is a percentage above a speed limit for the roadway.
 10. Themethod of claim 1, wherein the speed preference is a percentage below aspeed limit for the roadway.
 11. The method of claim 1, wherein thespeed preference is a percentage above a speed limit for the roadway.12. The method of claim 1, wherein the speed preference is fixed speedvalue below a speed limit for the roadway.
 13. A system comprising:memory; and a processor configured to: receive sensor data collected asa vehicle is maneuvered by the one or more computing devices along aroadway; determine a set of objects likely to be vehicles traveling inthe same general direction as the autonomous vehicle from the sensordata; identify a speed preference for the vehicle based on the set ofobjects and data including a set of two or more speed scenarios forobjects likely to be vehicles traveling in the same general direction asthe autonomous vehicle; calculate a preferred speed based on theidentified speed preference; and adjust a speed of the autonomousvehicle to the preferred speed.
 14. The system of claim 13, wherein theone or more processors are further configured to: identify a driver ofthe vehicle; and identify the speed preference by selecting the speedpreference from a plurality of speed preferences for different driversbased on the identified driver.
 15. The system of claim 13, wherein whenthe set of objects is empty, the speed preference includes a maximumspeed value above a speed limit for the roadway.
 16. The system of claim13, wherein the one or more processors are further configured toidentify the speed preference by identifying a scenario of the set oftwo or more speed scenarios based a speed of an object of the set ofobjects that is slower than a speed of any other object of the set ofobjects and the speed preference is associated with the identifiedscenario.
 17. The system of claim 13, wherein the one or more processorsare further configured to identify the speed preference by identifying ascenario of the set of two or more speed scenarios based on an averagespeed of the objects of the set of objects and the speed preference isassociated with the identified scenario.
 18. The system of claim 13,wherein the one or more processors are further configured to identifythe speed preference by a scenario of the set of two or more speedscenarios based on an average speed of the objects of the set of objectsabove a speed limit of the roadway and the speed preference isassociated with the identified scenario.
 19. The system of claim 13,wherein the one or more processors are further configured to identifythe speed preference by a scenario of the set of two or more speedscenarios based on a speed of an object of the set of objects that isfaster than a speed of any other object of the set of objects and thespeed preference is associated with the identified scenario.
 20. Anon-transitory, tangible machine readable medium on which instructionsare stored, the instructions, when executed by one or more processors,cause the one or more processors to perform a method, the methodcomprising: receiving sensor data collected as a vehicle is maneuveredby the one or more computing devices along a roadway; determining, bythe one or more computing devices, a set of objects likely to bevehicles traveling in the same general direction as the autonomousvehicle from the sensor data; identifying a speed preference for thevehicle based on the set of objects and data including a set of two ormore speed scenarios for objects likely to be vehicles traveling in thesame general direction as the autonomous vehicle; calculating apreferred speed based on the identified speed preference; and adjustinga speed of the autonomous vehicle to the preferred speed.